## Warning: package 'tidyverse' was built under R version 3.5.1
## -- Attaching packages --------------------------------------------------------------------- tidyverse 1.2.1 --
## v ggplot2 3.0.0 v purrr 0.2.4
## v tibble 1.4.2 v dplyr 0.7.4
## v tidyr 0.8.1 v stringr 1.3.0
## v readr 1.1.1 v forcats 0.3.0
## Warning: package 'ggplot2' was built under R version 3.5.1
## Warning: package 'readr' was built under R version 3.5.1
## Warning: package 'forcats' was built under R version 3.5.1
## -- Conflicts ------------------------------------------------------------------------ tidyverse_conflicts() --
## x dplyr::filter() masks stats::filter()
## x dplyr::lag() masks stats::lag()
## Warning: package 'plotly' was built under R version 3.5.1
##
## Attaching package: 'plotly'
## The following object is masked from 'package:ggplot2':
##
## last_plot
## The following object is masked from 'package:stats':
##
## filter
## The following object is masked from 'package:graphics':
##
## layout
## Parsed with column specification:
## cols(
## nomeParlamentar = col_character(),
## idCadastro = col_integer(),
## sgUF = col_character(),
## sgPartido = col_character(),
## tipoDespesa = col_character(),
## especDespesa = col_character(),
## fornecedor = col_character(),
## CNPJCPF = col_character(),
## tipoDocumento = col_integer(),
## dataEmissao = col_datetime(format = ""),
## valorDocumento = col_double(),
## valorGlosa = col_integer(),
## valorLíquido = col_double()
## )
Primeiro precisamos remover os valores líquidos negativos e aqueles valores que não representam deputados. Para isso, utilizo o filter e extraio apenas os resultados válidos. Em seguida, agrupo os parlamentares e extraio a soma dos valores líquidos com as funções group_by e summarise, respectivamente. Por fim, realizo um ordenamento para os dez valores mais altos de gastos e os dez valores mais baixos para construção do gráfico.
gastosDeputados <-
dados %>%
filter(!is.na(idCadastro) & valorLíquido >= 0) %>%
group_by(nomeParlamentar) %>%
summarise(gasto = sum(valorLíquido))
deputadosGastadores <-
gastosDeputados %>%
arrange(desc(gasto)) %>%
slice(1:10)
deputadosEconomicos <-
gastosDeputados %>%
arrange(gasto) %>%
slice(1:10)
plot_ly(deputadosGastadores, y =~ gasto, x =~ reorder(nomeParlamentar, gasto), marker = list(color = "#99d8c9")) %>%
layout(title = "Deputados que mais gastaram", yaxis = list(title = "R$"), xaxis = list(title ="", tickangle = -90))
## No trace type specified:
## Based on info supplied, a 'bar' trace seems appropriate.
## Read more about this trace type -> https://plot.ly/r/reference/#bar
plot_ly(deputadosEconomicos, y =~ gasto, x =~ reorder(nomeParlamentar, gasto), marker = list(color = "#99d8c9")) %>%
layout(title = "Deputados que menos gastaram", yaxis = list(title = "R$"), xaxis = list(title ="", tickangle = -90))
## No trace type specified:
## Based on info supplied, a 'bar' trace seems appropriate.
## Read more about this trace type -> https://plot.ly/r/reference/#bar
A questão é semelhante a anterior, só que o foco agora é filtrar os documentos que remetam ao uso do auxílio no exterior. Para fazer isso basta filtrar os resultados que tenham 2 no campo tipoDocumento e agrupar o resultado por meses. Depois ordenamos os valores e selecionamos apenas os maiores e menores.
gastosExterior <-
dados %>%
filter(tipoDocumento == 2 & valorLíquido >= 0 & !is.na(idCadastro))
gastosUFTotais <-
gastosExterior %>%
group_by(sgUF) %>%
summarise(gasto = sum(valorLíquido))
maisGastos <-
gastosUFTotais %>%
arrange(desc(gasto)) %>%
slice(1:10)
menosGastos <-
gastosUFTotais %>%
arrange(gasto) %>%
slice(1:10)
plot_ly(maisGastos, y =~ gasto, x =~ reorder(sgUF, gasto), marker = list(color = "#99d8c9")) %>%
layout(title = "Estados que mais gastaram no exterior", yaxis = list(title = "R$"), xaxis = list(title ="", tickangle = -90))
## No trace type specified:
## Based on info supplied, a 'bar' trace seems appropriate.
## Read more about this trace type -> https://plot.ly/r/reference/#bar
plot_ly(menosGastos, y =~ gasto, x =~ reorder(sgUF, gasto), marker = list(color = "#99d8c9")) %>%
layout(title = "Estados que menos gastaram", yaxis = list(title = "R$"), xaxis = list(title ="", tickangle = -90))
## No trace type specified:
## Based on info supplied, a 'bar' trace seems appropriate.
## Read more about this trace type -> https://plot.ly/r/reference/#bar
Nessa atividade, foi preciso filtrar os dados da Paraíba e depois agrupar os partidos. Em seguida, foi feito uma soma dos valores dos montantes líquidos e a soma da quantidade de registros feitos pelos partidos. Dessa forma, podemos elencar os partidos mais e menos economicos. O gráfico abaixo representa o somatório dos gastos em reais e em quantidade absoluta, horizontalmente e verticalmente, respectivamente.
partidosGastos <-
dados %>%
filter(sgUF == "PB") %>%
group_by(sgPartido) %>%
summarise(gasto = sum(valorLíquido), quantidade = n())
partidosPBGastadores <-
partidosGastos %>%
arrange(desc(gasto)) %>%
slice(1:5)
partidosPBEconomizadores <-
partidosGastos %>%
arrange(gasto) %>%
slice(1:5)
plot_ly(data = partidosGastos, x = ~gasto, y = ~quantidade, text = ~paste("Partido: ", sgPartido)) %>%
layout(title = "Gasto de deputados (por estado) no exterior", yaxis = list(title = "Quantidade de Auxílios Utilizados"), xaxis = list(title ="Montante em R$"))
## No trace type specified:
## Based on info supplied, a 'scatter' trace seems appropriate.
## Read more about this trace type -> https://plot.ly/r/reference/#scatter
## No scatter mode specifed:
## Setting the mode to markers
## Read more about this attribute -> https://plot.ly/r/reference/#scatter-mode
Essa foi a atividade mais difícil a ser resolvida. Inicialmente converti as datas para o formato mês-ano para que conseguisse extrair o gasto mensal. Posteriormente, agrupei os estados, meses e parlamentares para que fosse feito a soma de quanto cada parlamentar gastou em cada mês. Depois comparei o resultado de cada mês com o limite mensal que foi importado e convertido para outro formato para facilitar a comparação. Nessa conversão, troquei os valores de UF por valores de coluna de forma a ter uma espécie de dicionário com chaves (siglas das UFs) e valores (limite mensal). Extraindo os depultados que extrapolaram o limite mensal, contabilizei a quantidade de vezes que foi extrapolado e ordenei os que mais ultrapassaram o limite. Por fim, removi os resultados repetidos de cada estado, sobrando assim apenas o mais extrapolador.
limite <- read_csv("limiteMensalCEAP.csv") %>%
spread(UF, limite_mensal)
## Parsed with column specification:
## cols(
## UF = col_character(),
## limite_mensal = col_double()
## )
gastosDeputadosMensais <-
dados %>%
filter(!is.na(dataEmissao) & !is.na(sgUF)) %>%
mutate(dataEmissao = format(as.POSIXct(dataEmissao),"%Y-%m")) %>%
group_by(dataEmissao, nomeParlamentar, idCadastro, sgUF) %>%
summarise(gasto = sum(valorLíquido)) %>%
filter(gasto >= limite[sgUF]) %>%
group_by(nomeParlamentar, sgUF) %>%
summarise(quantidade = n(), gasto = sum(gasto)) %>%
arrange(desc(quantidade))
gastosDeputadosMensais <- gastosDeputadosMensais[!duplicated(gastosDeputadosMensais$sgUF), ]
plot_ly(gastosDeputadosMensais, x = ~gasto, y = ~quantidade, text = ~paste("Parlamentar: ", nomeParlamentar, "<br>Estado:", sgUF)) %>%
layout(title = "Deputados que mais extrapolaram o teto do seu estado", yaxis = list(title = "Quantidade de Auxílios Utilizados"), xaxis = list(title ="Montante em R$"))
## No trace type specified:
## Based on info supplied, a 'scatter' trace seems appropriate.
## Read more about this trace type -> https://plot.ly/r/reference/#scatter
## No scatter mode specifed:
## Setting the mode to markers
## Read more about this attribute -> https://plot.ly/r/reference/#scatter-mode
Primeiro filtrei as despesas com emissão de bilhete aéreo, depois agrupei com os estados. Por fim, realizei uma soma dos valores líquidos dos gastos para obter o resultado.
estadosPassagens <-
dados %>%
filter(tipoDespesa == "Emissão Bilhete Aéreo") %>%
group_by(sgUF) %>%
summarise(gasto = sum(valorLíquido))
plot_ly(estadosPassagens, y =~ gasto, x =~ reorder(sgUF, gasto), marker = list(color = "#99d8c9")) %>%
layout(title = "Estados que mais gastaram com passagens aéreas", yaxis = list(title = "R$"), xaxis = list(title ="Estados", tickangle = -90))
## No trace type specified:
## Based on info supplied, a 'bar' trace seems appropriate.
## Read more about this trace type -> https://plot.ly/r/reference/#bar
Escolhi os partidos PT, PSDB e PMDB. Realizei o filtro nos dados para eliminar os outros partidos. Em seguida, agrupei os valores dos partidos realizando a sumarização com a soma dos gastos e a quantidade em cada tipo de despesa. Para finalizar, dividi os resultados por quantidade e por montante e criei o gráfico abaixo com o resultado obtido do montante de cada partido.
partidos <- c("PT", "PSDB", "PMDB")
partidosDespesas <-
dados %>%
filter(sgPartido %in% partidos) %>%
group_by(sgPartido, tipoDespesa) %>%
summarise(gasto = sum(valorLíquido), quantidade = n()) %>%
group_by(sgPartido, tipoDespesa) %>%
summarise(gasto = sum(gasto), quantidade = sum(quantidade))
# Nesse resultado estamos levando em consideração apenas a quantidade de auxílios registrados
partidosPorQuantidade <-
partidosDespesas %>%
arrange(desc(quantidade))
partidosPorQuantidade <- partidosPorQuantidade[!duplicated(partidosPorQuantidade$sgPartido), ]
# Nesse resultado estamos levando em consideração apenas a soma
partidosPorMontante <-
partidosDespesas %>%
arrange(desc(gasto))
partidosPorMontante <- partidosPorMontante[!duplicated(partidosPorMontante$sgPartido), ]
# Para o gráfico, usarei apenas o montante
graficoDado <-
partidosPorMontante %>%
spread(sgPartido, gasto)
plot_ly(graficoDado, x = ~tipoDespesa, y = ~PMDB, type = 'bar', name = 'PMDB') %>%
add_trace(y = ~PSDB, name = 'PSDB') %>%
add_trace(y = ~PT, name = 'PT') %>%
layout(yaxis = list(title = 'Quantidade em Reais'), xaxis = list(title = 'Tipo de Despesa'), barmode = 'group')
## Warning: Ignoring 2 observations
## Warning: Ignoring 2 observations
## Warning: Ignoring 2 observations